package com.cw.jeeyt.dao.mapper.system;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cw.jeeyt.common.annotation.LogParam;
import com.cw.jeeyt.dao.model.system.SystemTableInfoDo;
import com.cw.lang.common.mapper.common.CommonMapper;

/**
 * 表模型信息 dao数据库操作接口
 * @author chenw
* @version 1.0.0
 */
public interface SystemTableInfoMapper extends CommonMapper<SystemTableInfoDo> {
    /**
     * 查询所有表模型信息
     *
     * @return 表模型信息集合
     */
    List<SystemTableInfoDo> querySystemTableInfoList();

    /**
     * 删除表模型信息
     *
     * @param systemTableInfo
     */
    @LogParam(logDes = "删除表模型信息", operateModule = "表模型信息管理")
    void deleteSystemTableInfo(@Param("systemTableInfo") SystemTableInfoDo systemTableInfo);

    /**
     * 修改表模型信息
     *
     * @param systemTableInfo
     */
    @LogParam(logDes = "修改表模型信息", operateModule = "表模型信息管理")
    void updateSystemTableInfo(SystemTableInfoDo systemTableInfo);

    /**
     * 根据主键查询表模型信息
     *
     * @param id 主键id
     * @return SystemTableInfo
     */
    SystemTableInfoDo getSystemTableInfoById(String id);

    /**
     * 新增表模型信息
     *
     * @param systemTableInfo
     * @return 整数
     */
    @LogParam(logDes = "新增表模型信息", operateModule = "表模型信息管理")
    Integer insertSystemTableInfo(SystemTableInfoDo systemTableInfo);

    /**
     * 分页查询表模型信息
     *
     * @param systemTableInfo 查询条件
     * @return SystemTableInfo集合
     */
    List<SystemTableInfoDo> queryByPage(@Param("systemTableInfo") SystemTableInfoDo systemTableInfo);

    /**
     * 更新表模型中的主键id
     *
     * @param tableId 表模型id
     * @param pkId 表模型主键id
     * @throws Exception
     */
    @LogParam(logDes = "更新表模型主键id", operateModule = "表模型信息管理")
    void updatePkId(@Param("tableId") String tableId, @Param("pkId") Long pkId,
        @Param("columnType") String columnType);

    /**
     * 查询模块下的表模型信息
     *
     * @param moduleId 模块id
     * @return
     * @throws Exception
     */
    List<SystemTableInfoDo> queryListByModuleId(String moduleId);

    /**
     * 根据表前缀删除表模型信息
     *
     * @param tablePrefix
     */
    void deleteByTableCodePrefix(@Param("tablePrefix") String tablePrefix, @Param("modulePrefix") String modulePrefix);
}
